class_name ItemUseContext
extends RefCounted

## 物品使用上下文类
## 包含物品使用时需要的所有上下文信息
## 遵循单一职责原则：只负责数据传递，不包含业务逻辑

var user_entity: Entity = null          # 使用者实体
var world_position: Vector3 = Vector3.ZERO      # 使用位置
var target_position: Vector3 = Vector3.ZERO     # 目标位置（如果有）
var additional_data: Dictionary = {}    # 扩展数据

## 构造函数
## @param user: 使用者实体
## @param input: 输入节点
## @param abilities: 能力管理器
func _init(user: Entity = null):
	user_entity = user

## 设置世界位置
## @param pos: 世界坐标位置
func set_world_position(pos: Vector3):
	world_position = pos

## 设置目标位置
## @param pos: 目标坐标位置
func set_target_position(pos: Vector3):
	target_position = pos

## 添加扩展数据
## @param key: 数据键
## @param value: 数据值
func add_data(key: String, value):
	additional_data[key] = value

## 获取扩展数据
## @param key: 数据键
## @param default_value: 默认值
## @return: 对应的数据值
func get_data(key: String, default_value = null):
	return additional_data.get(key, default_value)

## 验证上下文是否有效
## @return bool: 上下文是否包含必要信息
func is_valid() -> bool:
	return user_entity != null
